/**
 * @Author：JIAMIN_TANG
 * @Description:利用顺序表的知识解决杨辉三角的问题
 * @CreateTime：2025/10/8 12:00
 */
import java.util.ArrayList;
import java.util.List;
public class Java_ArrayList_YangHui_san_jiao {
    public List<List<Integer>> generate(int numRows){
        List<List<Integer>> result = new ArrayList<List<Integer>>();//创建一个能装List<Integer>的List<List<Integer>>类型的顺序表，List<List<Integer>>为容纳杨辉三角整体的容器，这个整体就是由很多个层（很多行）即List<Integer>组成，List<Integer>是容纳杨辉三角中每一行的容器，List<Interger>里存储的就是杨辉三角中每一行的每一个元素
        for(int i = 0;i < numRows;i++){//控制杨辉三角的行数
            List<Integer> row = new ArrayList<Integer>();//一个List<Integer>顺序表就是一行，通过for循环创建出所有的行
            for(int j = 0;j < i+1;j++){//现在再通过for循环设置每一行中每个详细的元素
                if(j==0||j==i){
                    row.add(1);//每一行的第一个元素和最后一个元素都是1
                }else{
                    int current = result.get(i-1).get(j-1)+result.get(i-1).get(j);//杨辉三角的其他元素是通过上一行的两个元素相加得到的
                    row.add(current);//把当前元素添加到当前行的顺序表中
                }
            }
            result.add(row);//把当前行这个顺序表放到整体的顺序表中
        }
        return result;//返回List<List<Integer>>(即整个杨辉三角)
    }
    public static void main(String[] args){
        Java_ArrayList_YangHui_san_jiao solution = new Java_ArrayList_YangHui_san_jiao();
        List<List<Integer>> result = solution.generate(5);
        System.out.println(result);
    }
}
